﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once

#include "GcmpDevService.h"

namespace gcmp
{
    /// \brief 产品信息的基类
    ///
    /// 不同的产品在对应的exe中初始化产品信息
    class GCMP_DEV_SERVICE_EXPORT IProductBasicInformation
    {
    public:
        /// \brief 区分内部开发版、对外发布版
        ///
        /// 区分内部开发版、对外发布版, 由sdk\GBMP_Config.xml 中InHouseMode标记位区分
        virtual bool IsInHouseMode() const = 0;

        /// \brief 产品的日志文件输出路径
        virtual std::wstring GetLogsFolderPath() const = 0;

        /// \brief 产品在崩溃时需上传的文件路径
        ///
        /// \return 产品在崩溃时需上传的文件路径
        virtual std::vector<std::wstring> GetReportedFilesOnApplicationAbort() const = 0;

        /// \brief crash平台上对应的产品名
        virtual std::wstring GetName() const = 0;

        /// \brief crash 平台上对应的版本
        virtual std::wstring GetVersion() const = 0;

        /// \brief crash 平台上产品的pcode
        virtual std::wstring GetProductCode() const = 0;

        /// \brief 产品数据埋点时, Action 的查找表
        ///
        /// 每个产品的界面按钮都需要用一个json文件汇总
        virtual std::wstring GetActionNameTable() const = 0;

        /// \brief 产品软件显示给用户的版本
        virtual std::wstring GetDisplayVersion() const = 0;

    public:
        /// \brief 析构函数
        virtual ~IProductBasicInformation(void);
    };
}
